///////////////////////////////////////////////////////////
//  GameLogManager.h
//  Implementation of the Class GameLogManager
//  Created on:      12-Jan-2015 1:05:38 PM
//  Original author: Eng. Ahmed Yasser
///////////////////////////////////////////////////////////

#if !defined(EA_BAEDFE70_171C_4be3_8088_1886E9F63A9A__INCLUDED_)
#define EA_BAEDFE70_171C_4be3_8088_1886E9F63A9A__INCLUDED_

namespace EngineGame
{
	namespace EngineProfile
	{
		/**
		 * The default game log manager used in the game
		 * @author Eng. Ahmed Yasser
		 * @version 1.0
		 * @updated 12-Jan-2015 1:06:15 PM
		 */
		class GameLogManager : public EngineGame::EngineProfile::IGameLogManager
		{
protected:
			/**
			 * The logger object that will be used internally in logging messages
			 */
			EngineGame::EngineProfile::IGameLog *_gameLogger;


		public:			EngineGame::EngineProfile::IGameLog *_IGameLog;
			GameLogManager();
			virtual ~GameLogManager();
			GameLogManager(const GameLogManager& theGameLogManager);
			/**
			 * Create the logger that the application will use it in logging system messages
			 * 
			 * @param logger    The log object that will be used in the logging, default is
			 * text logger in file (EngineGameLog.log)
			 */
			virtual void createLogger(IGameLog* logger);
			/**
			 * Destroys the logging manager
			 */
			virtual void destroyLogManager();
			/**
			 * Initialize the logging manager
			 */
			virtual void initLogManager();
			/**
			 * Log the message to the current active logger
			 * 
			 * @param message    The message to be logged
			 */
			virtual void logMessage(std::string message);

		};

	}

}
#endif // !defined(EA_BAEDFE70_171C_4be3_8088_1886E9F63A9A__INCLUDED_)
